1
超越线性搜索:关联容器的强大之处
AI037Lesson 15
00:00

想象一个图书馆,书籍不是按到达日期排列,而是通过一个 通用密钥。这标志着从顺序存储到 关联容器的范式转变。与其线性扫描一个 向量 ($O(N)$),我们使用 映射(map)集合(set) 来实现对数时间查找($O(\log n)$)

1. 关联的本质

映射(map)中,我们存储 键值对。键充当索引,可以是字符串、自定义对象,或任何支持 严格弱序的类型。而 集合(set)则仅存储唯一键,是进行成员测试或筛选的理想工具。

向量(顺序)集合(关联)[0]"A"[1]"B"[2]"A"(重复)去重过滤键:"A"键:"B"

2. 有序与无序

标准容器(映射(map)集合(set))会保持键的排序。 C++11 标准 引入了无序变体(unordered_map),它们使用 哈希函数 实现平均 $O(1)$ 的性能。使用这些高性能桶时,请留意 C++11 标志 标志。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>